package com.raos.quartz.second;

import org.quartz.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * Quartz的3大API之一 -- Job
 * JobDetail 是任务的定义，而 Job 是任务的执行逻辑。在 JobDetail 里会引用一个 Job Class 定义。
 * 每一个 JobDetail 都会有一个JobDataMap。JobDataMap 本质就是一个 Map 的扩展类，提供了一些便捷的方法，比如 getString();
 *
 * @author raos
 * @email 991207823@qq.com
 * @date 2021/10/01 20:10
 */
public class SecondJob implements Job {
    private Logger logger = LoggerFactory.getLogger(SecondJob.class);

    private SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @Override
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        Date date = new Date();
        String formatDate = sf.format(date);
        logger.info("现在的时间是：{}", formatDate);

        //具体的业务逻辑
        logger.info("开始生成任务报表 或 开始发送邮件....");
        JobKey key = jobExecutionContext.getJobDetail().getKey();
        logger.info("jobDetail的name=[{}]", key.getName());      //打印 jobDetail 的name
        logger.info("jobDetail的group=[{}]", key.getGroup());    //打印 jobDetail 的group

        JobDataMap jobDetailDataMap = jobExecutionContext.getJobDetail().getJobDataMap();
        String message = jobDetailDataMap.getString("message");
        float floatJobValue = jobDetailDataMap.getFloat("FloatJobValue");
        logger.info("jobDataMap定义的message的值=[{}]" , message);              //打印 jobDataMap 定义的message的值
        logger.info("jobDataMap定义的floatJobValue的值=[{}]", floatJobValue);   //打印 jobDataMap 定义的floatJobValue的值
        System.out.println();
    }

}
